package com.bamboo.core.component.convert;

import java.util.List;

/**
 * @param <E> orm实体
 * @param <FD> 表单dto
 * @param <BD> 业务dto
 * @description orm实体和业务对象存在必要的转换情况，虽然使用BeanUtil可以实现，为了更好的性能还是选择手动处理转换
 * @date 2025/3/18 9:10
 * @author chenzh
 */
public interface IConvertEntityAndDto<E, FD, BD> {
    /**
     * @description 将dto转换成entity
     * @date 2025/3/18 9:11
     * @author chenzh
     * @param dto 业务对象
     * @param ignoreFields 忽略的字段
     * @return E
     */
    E convertDto(FD dto, String... ignoreFields);

    /**
     * @description 将entity转换成dto
     * @date 2025/3/18 9:11
     * @author chenzh
     * @param entity orm实体
     * @param ignoreFields 忽略的字段
     * @return D
     */
    BD convertEntityToBd(E entity, String... ignoreFields);

    /**
     * @description 将entity转换成fromDto
     * @date 2025/3/18 14:05
     * @author chenzh
     * @param entity orm实体
     * @param ignoreFields 忽略的字段
     * @return FD
     */
    FD convertEntityToFd(E entity, String... ignoreFields);

    /**
     * @description 批量转换
     * @date 2025/3/18 9:12
     * @author chenzh
     * @param entityList orm实体列表
     * @param ignoreFields 忽略的字段
     * @return List<D>
     */
    List<BD> convertEntityList(List<E> entityList, String... ignoreFields);
}
